Este Jupyter Notebook investiga a base de dados de propriedades acústicas disponíveis no site http://www.primaryobjects.com/2016/06/22/identifying-the-gender-of-a-voice-using-machine-learning/
Objetivo da investigação é determinar as chances de algum algoritmo para detecção de gênero, seja por estatística tradicional ou por meio técnicas machine learning e redes neurais, possibilitando a implantação em dispositivos embarcados de baixo custo de memória e processamento restrito.
As seguintes propriedades acústicas de cada voz são medidas:
%matplotlib inline
# Importa as bibliotecas
import pandas
import matplotlib.pyplot as plt
import numpy
#from pandas.tools.plotting import scatter_matrix
from pandas.plotting import scatter_matrix
import seaborn as sb
# Carrega os dados
url = ".\\baseDados\\voice.csv"
colunas = ["meanfreq","sd","median","Q25","Q75","IQR","skew","kurt","sp.ent","sfm","mode","centroid","meanfun","minfun","maxfun","meandom","mindom","maxdom","dfrange","modindx","label"]
dataset = pandas.read_csv(url, names=colunas, sep = ",")
# PANDAS: Verificando alguns dados
exemplos = dataset.head(2)
print(exemplos)
dataset.head()
dataset.tail()
exemplos = dataset.tail(2)
print(exemplos)
dfnull = dataset.isnull()
dfnull.head(3)
dfnull.isnull().sum()
#!pip install missingno
#!pip3 install missingno
import missingno as msno
msno.matrix(dataset,figsize=(12,5))
dfnull.dropna()
print(dfnull.shape)
# PANDAS: Verifica a dimensão dos dados (linhas, colunas)
dim = dataset.shape
print(dim)
dataset.info()
tipos = dataset.dtypes
print(tipos)
dataset.describe()
pandas.set_option('display.width', 100)
pandas.set_option('precision', 3)
resultado = dataset.describe()
print(resultado)
dataset.describe().transpose()
print(dataset.describe().transpose())
contagem = dataset.groupby('label').size()
print(contagem)
sb.countplot('label',data=dataset)
plt.rcParams['figure.figsize'] = (10,5)
plt.show()
dataset.dtypes
A = str(tipos)
A = A.replace('float64',"Quantitativa Contínua")
A = A.replace('object',"Qualitativa Nominal")
print(A)
A média é uma medida de tendência central que indica o valor onde estão concentrados os dados de um conjunto de valores, representando um valor significativo para o mesmo.
A mediana é o valor que separa a metade superior da metade inferior de uma distribuição de dados, ou o valor no centro da distribuição.
A moda é simples. Nada mais é que o valor que mais se repete dentro de um conjunto.
dataset.describe().transpose()
Modadic = {}
Medianaadic = {}
for x in colunas:
if x == "label":
continue
Modadic[x]=dataset[x].mode()[0]
Medianaadic[x]=dataset[x].median()
print(Modadic)
print(Medianaadic)
dfModa = pandas.DataFrame.from_dict(Modadic, orient="index").reset_index()
dfModa.columns = ["quantitativas","moda"]
dfModa.head()
dfmediana = pandas.DataFrame.from_dict(Medianaadic, orient="index").reset_index()
dfmediana.columns = ["quantitativas","mediana"]
dfmediana.head()
### usado para unir os dataframes.
df50porcento = pandas.DataFrame.from_dict(Medianaadic, orient="index").reset_index()
df50porcento.columns = ["quantitativas","50%"]
df50porcento.head()
dfmediaModa=pandas.merge(dfModa,dfmediana,how='left',on='quantitativas')
dfmediaModa=pandas.merge(dfmediaModa,df50porcento,how='left',on='quantitativas')
print(dfmediaModa)
A amplitude nada mais é do que a diferença entre o maior e o menor valor de um conjunto de dados. A variância é uma medida que expressa quanto os dados de um conjunto estão afastados de seu valor esperado. O desvio padrão também é uma medida de dispersão, que indica quanto os dados estão afastados da média.
O coeficiente de varição é usado para expressar a variabilidade dos dados estatísticos excluindo a influência da ordem de grandeza da variável.
dados_estatisticos = dataset.describe().transpose()
dados_estatisticos=pandas.merge(dfmediaModa,dados_estatisticos,how='right',on='50%')
print(dados_estatisticos)
dados_estatisticos
print(dataset['meanfreq'].max() - dataset['meanfreq'].min())
print(dataset['meanfreq'].var())
O cálculo do coeficiente de variação é feito através da fórmula:
cv/
Onde, s → é o desvio padrão X ? → é a média dos dados CV → é o coeficiente de variação

print( (dataset['meanfreq'].std()/dataset['meanfreq'].mean()) * 100 )
É a diferença entre o terceiro quartil e o primeiro quartil, ou seja, d= Q3-Q1
print(dataset['meanfreq'].quantile(q=0.75))
print(dataset['meanfreq'].quantile(q=0.25))
print(dataset['meanfreq'].quantile(q=0.75) - dataset['meanfreq'].quantile(q=0.25))
Amplitudedic = {}
Varianciadic = {}
CoeficienteVardic = {}
IntervaloInterquartildic = {}
for x in colunas:
if x == "label":
continue
Amplitudedic[x]=dataset[x].max() - dataset[x].min()
Varianciadic[x] = dataset[x].var()
CoeficienteVardic[x] = (dataset[x].std()/dataset[x].mean()) * 100
IntervaloInterquartildic[x] = dataset[x].quantile(q=0.75) - dataset[x].quantile(q=0.25)
dfAmplitude = pandas.DataFrame.from_dict(Amplitudedic, orient="index").reset_index()
dfAmplitude.columns = ["quantitativas","Amplitude"]
dfAmplitude.head()
dfVariancia = pandas.DataFrame.from_dict(Varianciadic, orient="index").reset_index()
dfVariancia.columns = ["quantitativas","Variancia"]
dfVariancia.head()
dfCoeficiente = pandas.DataFrame.from_dict(CoeficienteVardic, orient="index").reset_index()
dfCoeficiente.columns = ["quantitativas","Coef_Var_%"]
dfCoeficiente.head()
IntervaloInterquartil = pandas.DataFrame.from_dict(IntervaloInterquartildic, orient="index").reset_index()
IntervaloInterquartil.columns = ["quantitativas","Intervalo_Interquartil"]
IntervaloInterquartil.head()
dfresultado_frame=pandas.merge(dfAmplitude,dfVariancia,how='right',on='quantitativas')
dfresultado_frame=pandas.merge(dfresultado_frame,dfCoeficiente,how='right',on='quantitativas')
dfresultado_frame=pandas.merge(dfresultado_frame,IntervaloInterquartil,how='right',on='quantitativas')
print(dfresultado_frame)
dfresultado_frame
dados_estatisticos=pandas.merge(dados_estatisticos,dfresultado_frame,how='right',on='quantitativas')
#dados_estatisticos[[quantitativas]]
#dados_estatisticos = dados_estatisticos.drop_duplicates()
print(dados_estatisticos)
#dados_estatisticos = dados_estatisticos[["quantitativas"]]
#print(dados_estatisticos)
dados_estatisticos
Tabela de freqüência: relaciona categorias (ou classes) de valores,juntamente com contagem (ou freqüências) do número de valores que se enquadram em cada categoria ou classe.
Tamanho do dataset.
print(dataset.shape)
Agrupar pela variável label.
contagem = dataset.groupby('label').size()
print(contagem)
Prepara os resultados.
print(contagem[['female']][0])
print(contagem[['male']][0])
total=contagem[['female']][0] + contagem[['male']][0]
print(total)
freqFRsexodic={}
freqFRsexodic['female']= contagem[['female']][0] / total
freqFRsexodic['male']= contagem[['male']][0] / total
freqFRsexodic['Total']= ( contagem[['female']][0] / total ) + ( contagem[['male']][0] / total)
freqFRsexodic
freqFRpcsexodic={}
freqFRpcsexodic['female']= freqFRsexodic['female'] * 100
freqFRpcsexodic['male']= freqFRsexodic['male'] * 100
freqFRpcsexodic['Total']= freqFRsexodic['Total'] * 100
freqFRpcsexodic
freqsexodic={}
freqsexodic['female']=contagem[['female']][0]
freqsexodic['male']=contagem[['male']][0]
freqsexodic['Total']=total
freqsexodic
dffrequenciaSexo = pandas.DataFrame.from_dict(freqsexodic, orient="index").reset_index()
dffrequenciaSexo.columns = ["qualitivas","contagem"]
dffrequenciaSexoFR = pandas.DataFrame.from_dict(freqFRsexodic, orient="index").reset_index()
dffrequenciaSexoFR.columns = ["qualitivas","freqRelativa"]
dffrequenciaSexoFRpc = pandas.DataFrame.from_dict(freqFRpcsexodic, orient="index").reset_index()
dffrequenciaSexoFRpc.columns = ["qualitivas","freqRelativa%"]
dftabelaFreqQualitativas=pandas.merge(dffrequenciaSexo,dffrequenciaSexoFR,how='right',on='qualitivas')
dftabelaFreqQualitativas=pandas.merge(dftabelaFreqQualitativas,dffrequenciaSexoFRpc,how='right',on='qualitivas')
dftabelaFreqQualitativas
print(dftabelaFreqQualitativas)
sb.countplot('label',data=dataset)
plt.rcParams['figure.figsize'] = (10,5)
plt.show()
Procedimento de construção de tabelas de freqüência para variáveis contínuas: h = \frac{A}{k}
pandas.DataFrame(dataset['meanfreq'].value_counts(normalize=True)).head()
dataset.hist()
plt.rcParams['figure.figsize'] = (18,18)
plt.show()
### Fracionado os histogramas
n=0
Part=dataset[colunas[n:n+9]]
n=n+9 -1
Part.hist()
plt.rcParams['figure.figsize'] = (15,15)
plt.show()
Part=dataset[colunas[n:n+9]]
n=n+9
Part.hist()
Part=dataset[colunas[n:n+9]]
plt.rcParams['figure.figsize'] = (10,10)
plt.show()
Part.hist()
As = \frac{\mu3}{\sigma^{2}}
Dessa forma podemos classificar o coeficiente de assimetria da seguinte forma:
# PANDAS: Skew Assiemetria da distribuição
skew = dataset.skew()
print(skew)
for y in colunas:
if y == "label":
continue
Income = sb.distplot(dataset[y])
plt.title("Distibuicao")
plt.rcParams['figure.figsize'] = (8,8)
plt.show(y)
plt.rcParams['figure.figsize'] = (20,20)
dataset[colunas[0:10]].plot(kind='density', subplots=True, layout=(5,2), sharex=False)
plt.show()
# MATPLOTLIB: Gráfico de densidade (univariado)
plt.rcParams['figure.figsize'] = (20,20)
dataset[colunas[10:20]].plot(kind='density', subplots=True, layout=(5,2), sharex=False)
plt.show()
A medida de curtose pode ser calculada da seguinte maneira:
k = \frac{\mu4}{\sigma^{4}}
De acordo com esta medida temos a seguinte classificação:
Fonte: Ferreira, D. F. Estatística Básica. Ed. UFLA, 2005. 664 p.
dataset.kurtosis()
Interpretação: A assimetria da variável meanfun é 0.039. Este valor implica que a distribuição dos dados é levemente assimétrica a direita ou positivamente assimétrica. É assimétrica a direita, pois o coeficiente é positivo, e levemente, pois está próximo de zero. Para a curtose, o valor é -0.860, implicando que a distribuição dos dados é Platicúrtica, pois o valor de curtose é menor que 0.
skew = dataset.skew()
curtose=dataset.kurtosis()
type(skew)
srcurtose = curtose.to_dict()
for x in srcurtose:
Z = srcurtose[x]
if Z > 0:
srcurtose[x] = 'Leptocúrtica'
if Z < 0:
srcurtose[x] = 'Platicúrtica'
if Z == 0:
srcurtose[x] = 'Mesocúrtica'
Se As=0, distribuição é simétrica Se As>0, distribuição assimétrica a direita (positiva) Se As<0, distribuição assimétrica a esquerda (negativa) Fonte: Ferreira, D. F. Estatística Básica. Ed. UFLA, 2005. 664 p.
srskew = skew.to_dict()
for x in srskew:
Z = srskew[x]
if Z > 0:
srskew[x] = 'Assimétrica a direita'
if Z < 0:
srskew[x] = 'Assimétrica a esquerda'
if Z == 0:
srskew[x] = 'Simétrica'
frame = { 'Assimetria': skew, 'Curtose': curtose , 'CurtoseDescricao': srcurtose, 'AssimetriaCurtoseDescricao': srskew}
result = pandas.DataFrame(frame)
print(result)
result
O BOXPLOT representa os dados através de um retângulo construído com os quartis e fornece informação sobre valores extremos.
plt.rcParams['figure.figsize'] = (15,15)
dataset[colunas[0:6]].plot(kind='box', subplots=True, layout=(3,3), sharex=False, sharey=False)
plt.show()
plt.rcParams['figure.figsize'] = (15,15)
dataset[colunas[6:6 * 2]].plot(kind='box', subplots=True, layout=(3,3), sharex=False, sharey=False)
plt.show()
plt.rcParams['figure.figsize'] = (15,15)
dataset[colunas[6 *2 :6 * 3]].plot(kind='box', subplots=True, layout=(3,3), sharex=False, sharey=False)
plt.show()
plt.rcParams['figure.figsize'] = (15,15)
dataset[colunas[6 *3 :6 * 4]].plot(kind='box', subplots=True, layout=(3,3), sharex=False, sharey=False)
plt.show()
Esses dados serão tratados utilizando o desvio padrão: calculando o skewness: skewness = 3(média – mediana) / desvio padrão
# Carrega os dados
url = ".\\baseDados\\voice.csv"
colunas = ["meanfreq","sd","median","Q25","Q75","IQR","skew","kurt","sp.ent","sfm","mode","centroid","meanfun","minfun","maxfun","meandom","mindom","maxdom","dfrange","modindx","label"]
dataset = pandas.read_csv(url, names=colunas, sep = ",")
plt.rcParams['figure.figsize'] = (15,15)
dataset[colunas[0]].plot(kind='box', subplots=True, layout=(3,3), sharex=False, sharey=False)
plt.show()
dataset[colunas[0]].shape
calculando o skewness: skewness = 3(média – mediana) / desvio padrão
df_sem_Outliers= dataset[ numpy.abs(dataset[colunas[0]] - dataset[colunas[0]].mean() ) <= ( 3*dataset[colunas[0]].std()) ]
plt.rcParams['figure.figsize'] = (15,15)
df_sem_Outliers[colunas[0]].plot(kind='box', subplots=True, layout=(3,3), sharex=False, sharey=False)
plt.show()
df_sem_Outliers[colunas[0]].shape
Definição da Wikipedia A gama interquartil ( IQR ), também chamado o midspread ou meio de 50% , ou tecnicamente H-propagação , é uma medida da dispersão estatística, sendo igual à diferença entre os percentis 75 e 25 de, ou entre os quartis superiores e inferiores, IQR = Q 3 - Q 1. Em outras palavras, o IQR é o primeiro quartil subtraído do terceiro quartil; esses quartis podem ser vistos claramente em um gráfico de caixa nos dados. É uma medida da dispersão semelhante ao desvio ou variância padrão, mas é muito mais robusta contra valores extremos.
Q1 = dataset[colunas[0]].quantile(0.25)
Q3 = dataset[colunas[0]].quantile(0.75)
IQR = Q3 - Q1
df_sem_Outliersx = dataset[colunas[0]][~((dataset[colunas[0]] < (Q1 - 1.5 * IQR)) | (dataset[colunas[0]]> (Q3 + 1.5 * IQR)))]
dataset[colunas[0]] = df_sem_Outliersx
dataset.head()
plt.rcParams['figure.figsize'] = (15,15)
df_sem_Outliersx.plot(kind='box', subplots=True, layout=(3,3), sharex=False, sharey=False)
plt.show()
df_sem_Outliersx.shape
dfgrafico_test = dataset
NV=6
for z in range(0,NV):
for y in colunas:
if y == "label":
continue
Q1 = dfgrafico_test[y].quantile(0.25)
Q3 = dfgrafico_test[y].quantile(0.75)
IQR = Q3 - Q1
df_sem_Outliersx = dfgrafico_test[y][~((dfgrafico_test[y] < (Q1 - 1.5 * IQR)) | (dfgrafico_test[y]> (Q3 + 1.5 * IQR)))]
dfgrafico_test[y] = df_sem_Outliersx
dfgrafico_test = dataset
for z in range(0,NV):
for y in colunas:
if y == "label":
continue
Q1 = dataset[y].quantile(0.25)
Q3 = dataset[y].quantile(0.75)
IQR = Q3 - Q1
df_sem_Outliersx = dataset[y][~((dataset[y] < (Q1 - 1.5 * IQR)) | (dataset[y]> (Q3 + 1.5 * IQR)))]
dataset[y] = df_sem_Outliersx
dataset=dataset.fillna(dataset.mean())
dfgrafico_test.head()
msno.matrix(dfgrafico_test,figsize=(12,5))
dfgrafico_test.isnull().sum()
dataset = dataset.dropna()
print(dataset.shape)
msno.matrix(dataset,figsize=(12,5))
sb.countplot('label',data=dataset)
plt.rcParams['figure.figsize'] = (10,5)
plt.show()
contagem = dataset.groupby('label').size()
print(contagem)
total=contagem[['female']][0] + contagem[['male']][0]
freqFRsexodic={}
freqFRsexodic['female']= contagem[['female']][0] / total
freqFRsexodic['male']= contagem[['male']][0] / total
freqFRsexodic['Total']= ( contagem[['female']][0] / total ) + ( contagem[['male']][0] / total)
freqFRpcsexodic={}
freqFRpcsexodic['female']= freqFRsexodic['female'] * 100
freqFRpcsexodic['male']= freqFRsexodic['male'] * 100
freqFRpcsexodic['Total']= freqFRsexodic['Total'] * 100
freqsexodic={}
freqsexodic['female']=contagem[['female']][0]
freqsexodic['male']=contagem[['male']][0]
freqsexodic['Total']=total
dffrequenciaSexo = pandas.DataFrame.from_dict(freqsexodic, orient="index").reset_index()
dffrequenciaSexo.columns = ["qualitivas","contagem"]
dffrequenciaSexoFR = pandas.DataFrame.from_dict(freqFRsexodic, orient="index").reset_index()
dffrequenciaSexoFR.columns = ["qualitivas","freqRelativa"]
dffrequenciaSexoFRpc = pandas.DataFrame.from_dict(freqFRpcsexodic, orient="index").reset_index()
dffrequenciaSexoFRpc.columns = ["qualitivas","freqRelativa%"]
dftabelaFreqQualitativas=pandas.merge(dffrequenciaSexo,dffrequenciaSexoFR,how='right',on='qualitivas')
dftabelaFreqQualitativas=pandas.merge(dftabelaFreqQualitativas,dffrequenciaSexoFRpc,how='right',on='qualitivas')
dftabelaFreqQualitativas
O BOXPLOT representa os dados através de um retângulo construído com os quartis e fornece informação sobre valores extremos.
plt.rcParams['figure.figsize'] = (15,15)
dataset[colunas[0:6]].plot(kind='box', subplots=True, layout=(3,3), sharex=False, sharey=False)
plt.show()
plt.rcParams['figure.figsize'] = (15,15)
dataset[colunas[6:6 * 2]].plot(kind='box', subplots=True, layout=(3,3), sharex=False, sharey=False)
plt.show()
plt.rcParams['figure.figsize'] = (15,15)
dataset[colunas[6 *2 :6 * 3]].plot(kind='box', subplots=True, layout=(3,3), sharex=False, sharey=False)
plt.show()
plt.rcParams['figure.figsize'] = (15,15)
dataset[colunas[6 *3 :6 * 4]].plot(kind='box', subplots=True, layout=(3,3), sharex=False, sharey=False)
plt.show()
# PANDAS: Correlação
cor = dataset.corr(method='pearson')
print(cor)
sb.heatmap(cor, annot = True)
dfHomens = dataset[dataset["label"] == "male"]
dfMuheres = dataset[dataset["label"] == "female"]
###conferindo segmentação homens.
dfHomens.head(2)
dfHomens.tail(2)
###conferindo segmentação mulheres.
dfMuheres.head(2)
dfMuheres.tail(2)
## Correlação por seguimento.
# PANDAS: Correlação
Mcor = dfMuheres.corr(method='pearson')
print(Mcor)
# PANDAS: Correlação
Hcor = dfHomens.corr(method='pearson')
print(Hcor)
sb.heatmap(Hcor, annot = True)
sb.heatmap(Mcor, annot = True)
dataset.to_csv(".\\baseDados\\voice_fix.csv")
# Gráfico de dispersão (multivariado)
scatter_matrix(dataset)
plt.rcParams['figure.figsize'] = (15,15)
plt.show()
# Gráfico de dispersão (multivariado)
scatter_matrix(dfMuheres)
plt.rcParams['figure.figsize'] = (15,15)
plt.show()
# Gráfico de dispersão (multivariado)
scatter_matrix(dfHomens)
plt.rcParams['figure.figsize'] = (15,15)
plt.show()
%matplotlib inline
# Importa as bibliotecas
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
#from pandas.tools.plotting import scatter_matrix
from pandas.plotting import scatter_matrix
import seaborn as sb
# Carrega os dados
url = ".\\baseDados\\voice_fix.csv"
#colunas = ["meanfreq","sd","median","Q25","Q75","IQR","skew","kurt","sp.ent","sfm","mode","centroid","meanfun","minfun","maxfun","meandom","mindom","maxdom","dfrange","modindx","label"]
dataset = pandas.read_csv(url, sep = ",")
dataset.head()
dfHomens = dataset[dataset["label"] == "male"]
dfMuheres = dataset[dataset["label"] == "female"]
dfHomens.head()
dfMuheres.head()
DadosMax = []
for x in colunas:
if x == "label":
continue
Linha =[]
Linha.append(dataset[x].max())
Linha.append(dfMuheres[x].max())
Linha.append(dfHomens[x].max())
DadosMax.append(Linha)
df = pd.DataFrame(DadosMax,
index=["meanfreq","sd","median","Q25","Q75","IQR","skew","kurt","sp.ent","sfm","mode","centroid","meanfun","minfun","maxfun","meandom","mindom","maxdom","dfrange","modindx"],
columns=pd.Index(['Geral', 'Mulheres', 'Homens'],
name='Valores Maximos')).round(2)
df.plot(kind='bar',figsize=(15,8))
DadosMin = []
for x in colunas:
if x == "label":
continue
Linha =[]
Linha.append(dataset[x].min())
Linha.append(dfMuheres[x].min())
Linha.append(dfHomens[x].min())
DadosMin.append(Linha)
df = pd.DataFrame(DadosMin,
index=["meanfreq","sd","median","Q25","Q75","IQR","skew","kurt","sp.ent","sfm","mode","centroid","meanfun","minfun","maxfun","meandom","mindom","maxdom","dfrange","modindx"],
columns=pd.Index(['Geral', 'Mulheres', 'Homens'],
name='Valores Mínimos')).round(2)
df.plot(kind='bar',figsize=(15,8))
DadosMedia = []
for x in colunas:
if x == "label":
continue
Linha =[]
Linha.append(dataset[x].mean())
Linha.append(dfMuheres[x].mean())
Linha.append(dfHomens[x].mean())
DadosMedia.append(Linha)
df = pd.DataFrame(DadosMedia,
index=["meanfreq","sd","median","Q25","Q75","IQR","skew","kurt","sp.ent","sfm","mode","centroid","meanfun","minfun","maxfun","meandom","mindom","maxdom","dfrange","modindx"],
columns=pd.Index(['Geral', 'Mulheres', 'Homens'],
name='Média')).round(2)
df.plot(kind='bar',figsize=(15,8))
DadosMediana = []
for x in colunas:
if x == "label":
continue
Linha =[]
Linha.append(dataset[x].quantile(q=0.50))
Linha.append(dfMuheres[x].quantile(q=0.50))
Linha.append(dfHomens[x].quantile(q=0.50))
DadosMediana.append(Linha)
df = pd.DataFrame(DadosMediana,
index=["meanfreq","sd","median","Q25","Q75","IQR","skew","kurt","sp.ent","sfm","mode","centroid","meanfun","minfun","maxfun","meandom","mindom","maxdom","dfrange","modindx"],
columns=pd.Index(['Geral', 'Mulheres', 'Homens'],
name='Mediana')).round(2)
df.plot(kind='bar',figsize=(15,8))
Dadosdp = []
for x in colunas:
if x == "label":
continue
Linha =[]
Linha.append(dataset[x].std())
Linha.append(dfMuheres[x].std())
Linha.append(dfHomens[x].std())
Dadosdp.append(Linha)
df = pd.DataFrame(Dadosdp,
index=["meanfreq","sd","median","Q25","Q75","IQR","skew","kurt","sp.ent","sfm","mode","centroid","meanfun","minfun","maxfun","meandom","mindom","maxdom","dfrange","modindx"],
columns=pd.Index(['Geral', 'Mulheres', 'Homens'],
name='Desvio padrão')).round(2)
df.plot(kind='bar',figsize=(15,8))
Dadosvr = []
for x in colunas:
if x == "label":
continue
Linha =[]
Linha.append(dataset[x].var())
Linha.append(dfMuheres[x].var())
Linha.append(dfHomens[x].var())
Dadosvr.append(Linha)
df = pd.DataFrame(Dadosvr,
index=["meanfreq","sd","median","Q25","Q75","IQR","skew","kurt","sp.ent","sfm","mode","centroid","meanfun","minfun","maxfun","meandom","mindom","maxdom","dfrange","modindx"],
columns=pd.Index(['Geral', 'Mulheres', 'Homens'],
name='Variância')).round(2)
df.plot(kind='bar',figsize=(15,8))
Dados = []
for x in colunas:
if x == "label":
continue
Linha =[]
G=dataset[x].max() - dataset[x].min()
M=dfMuheres[x].max() - dfMuheres[x].min()
H=dfHomens[x].max() - dfHomens[x].min()
Linha.append(G)
Linha.append(M)
Linha.append(H)
Dados.append(Linha)
df = pd.DataFrame(Dados,
index=["meanfreq","sd","median","Q25","Q75","IQR","skew","kurt","sp.ent","sfm","mode","centroid","meanfun","minfun","maxfun","meandom","mindom","maxdom","dfrange","modindx"],
columns=pd.Index(['Geral', 'Mulheres', 'Homens'],
name='Amplitude')).round(2)
df.plot(kind='bar',figsize=(15,8))
Dados = []
for x in colunas:
if x == "label":
continue
Linha =[]
Linha.append(dataset[x].mode()[0])
Linha.append(dfMuheres[x].mode()[0])
Linha.append(dfHomens[x].mode()[0])
Dados.append(Linha)
df = pd.DataFrame(Dados,
index=["meanfreq","sd","median","Q25","Q75","IQR","skew","kurt","sp.ent","sfm","mode","centroid","meanfun","minfun","maxfun","meandom","mindom","maxdom","dfrange","modindx"],
columns=pd.Index(['Geral', 'Mulheres', 'Homens'],
name='MODA')).round(2)
df.plot(kind='bar',figsize=(15,8))
Dados = []
for x in colunas:
if x == "label":
continue
Linha =[]
Linha.append((dataset[x].std()/dataset[x].mean()) * 100)
Linha.append((dfMuheres[x].std()/dfMuheres[x].mean()) * 100)
Linha.append((dfHomens[x].std()/dfHomens[x].mean()) * 100)
Dados.append(Linha)
df = pd.DataFrame(Dados,
index=["meanfreq","sd","median","Q25","Q75","IQR","skew","kurt","sp.ent","sfm","mode","centroid","meanfun","minfun","maxfun","meandom","mindom","maxdom","dfrange","modindx"],
columns=pd.Index(['Geral', 'Mulheres', 'Homens'],
name='Coeficiente de variação')).round(2)
df.plot(kind='bar',figsize=(15,8))